#ifndef _2_89_H
#define _2_89_H

/**
 * biased = pow(2, k-1) - 1 = 127;
 * 几个特殊值（pow(2,x)）：
 * 0 00..00 000...01 最小可表示的数 E = 1 - biased = -126;  M = pow(2, -23) ;
 * 0 00..00 100...00 最大可表示非规格数 E = 1-biased=-126;  M = 1/2;
 * 0 00..01 000...00 最小可表示规格数   E = 1 - biased = -126； M=1;
 * 0 11..10 000...00 最大可表示规格数   E = 254 - biased = 127; M=1;
 * 0 11..11 000...00 正无穷
 */
float fpwr2(int x){
      unsigned exp, frac;
      unsigned u;

      if(x < -149){               <
           exp = 0;
           frac = 0;
      }else if(x < -126){
           exp = 0;
           frac = 1 << (x + 149);
      }else if(x < 128){
           exp = x + 127;
           frac = 0;
      }else{
           exp = 0xff;
           frac = 0;
      }

      u = exp << 23 | frac;

      return u2f(u);
}

#endif 
